package com.example.myapplication1;

// network/RetrofitClient.java
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {

    // 1. 基础 URL (替换成你的后端 API 基础地址)
    private static final String BASE_URL = "https://jsonplaceholder.typicode.com/";

    // 2. 单例模式的核心：volatile 保证多线程下的可见性
    private static volatile Retrofit retrofitInstance;
    private static ApiService apiService;

    // 3. 私有构造函数，防止外部实例化
    private RetrofitClient() {
        // 可选：如果有人尝试通过反射实例化，抛出异常
        if (retrofitInstance != null) {
            throw new RuntimeException("请通过 getInstance() 方法获取实例。");
        }
    }

    // 4. 提供全局访问点
    public static Retrofit getRetrofitInstance() {
        // 双重检查锁定 (Double-Check Locking)
        if (retrofitInstance == null) {
            synchronized (RetrofitClient.class) {
                if (retrofitInstance == null) {
                    retrofitInstance = new Retrofit.Builder()
                            .baseUrl(BASE_URL)
                            // 添加 Gson 转换器，用于自动将 JSON 响应转换为 Java 对象
                            .addConverterFactory(GsonConverterFactory.create())
                            .build();
                }
            }
        }
        return retrofitInstance;
    }

    // 5. 提供 API Service 的实例
    public static ApiService getApiService() {
        if (apiService == null) {
            apiService = getRetrofitInstance().create(ApiService.class);
        }
        return apiService;
    }
}